package cn.b.sky.user.dao;

import cn.b.sky.user.service.model.*;
import cn.b.sky.user.service.model.condition.RoleCondition;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 
 * <strong>Title : RoleDao.java<br>
 * </strong> <strong>Package : cn.b.sky.user.service.impl.dao<br>
 * </strong> <strong>Description : </strong>角色管理数据接口<br>
 * <strong>Create on : 2015-8-4 下午01:21:44<br>
 * </strong>
 * <p>
 * 
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 *          <strong>修改历史:</strong><br>
 *          修改人 | 修改日期 | 修改描述<br>
 *          -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface RoleDao
{

	/**
	 * 
	 * <strong>Title : selectRoleList<br>
	 * </strong> <strong>Description : </strong>查询角色<br>
	 * <strong>Create on : 2015-8-4 下午02:30:40<br>
	 * </strong>
	 * <p>
	 * 
	 * @param roleCondition
	 * @return List<Role>
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public List<Role> selectRoleList(RoleCondition roleCondition);

	/**
	 * 
	 * <strong>Title : selectRoleCount<br>
	 * </strong> <strong>Description : </strong>查询角色条数<br>
	 * <strong>Create on : 2015-8-4 下午02:30:12<br>
	 * </strong>
	 * <p>
	 * 
	 * @param roleCondition
	 * @return int
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public int selectRoleCount(RoleCondition roleCondition);

	/**
	 * 
	 * <strong>Title : selectRole<br>
	 * </strong> <strong>Description : </strong>查询角色<br>
	 * <strong>Create on : 2015-8-13 上午11:19:48<br>
	 * </strong>
	 * <p>
	 * 
	 * @param siteCode
	 * @param roleCode
	 * @return Role
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public Role selectRole(@Param("siteCode") String siteCode, @Param("roleCode") String roleCode);

	/**
	 * 
	 * <strong>Title : insertRole<br>
	 * </strong> <strong>Description : </strong>新增角色<br>
	 * <strong>Create on : 2015-8-13 上午11:20:48<br>
	 * </strong>
	 * <p>
	 * 
	 * @param role
	 *            void
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public void insertRole(Role role);

	/**
	 * 
	 * <strong>Title : updateRole<br>
	 * </strong> <strong>Description : </strong>修改角色<br>
	 * <strong>Create on : 2015-8-13 下午01:07:08<br>
	 * </strong>
	 * <p>
	 * 
	 * @param role
	 *            void
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public void updateRole(Role role);

	/**
	 * 
	 * <strong>Title : deleteRole<br>
	 * </strong> <strong>Description : </strong>删除角色<br>
	 * <strong>Create on : 2015-8-13 下午01:32:12<br>
	 * </strong>
	 * <p>
	 * 
	 * @param siteCode
	 * @param roleCode
	 *            void
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public void deleteRole(@Param("siteCode") String siteCode, @Param("roleCode") String roleCode);

	/**
	 * 
	 * <strong>Title : insertRoleMenu<br>
	 * </strong> <strong>Description : </strong>新增权限<br>
	 * <strong>Create on : 2015-8-13 下午01:07:54<br>
	 * </strong>
	 * <p>
	 * 
	 * @param roleMenu
	 *            void
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public void insertRoleMenu(RoleMenu roleMenu);

	/**
	 * 批量插入
	 * @param roleMenu
	 */
	public void batchInsertRoleMenu(Role role);
	/**
	 * 
	 * <strong>Title : deleteRoleMenu<br>
	 * </strong> <strong>Description : </strong>删除权限<br>
	 * <strong>Create on : 2015-8-13 下午01:45:30<br>
	 * </strong>
	 * <p>
	 * 
	 * @param siteCode
	 * @param roleCode
	 *            void
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public void deleteRoleMenu(@Param("siteCode") String siteCode, @Param("roleCode") String roleCode);

	/**
	 * 
	 * <strong>Title : deteteUserRoleByRole<br>
	 * </strong> <strong>Description : </strong>删除角色对应的用户角色<br>
	 * <strong>Create on : 2015-8-13 下午02:14:08<br>
	 * </strong>
	 * <p>
	 * 
	 * @param siteCode
	 * @param roleCode
	 *            void
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public void deteteUserRoleByRole(@Param("siteCode") String siteCode, @Param("roleCode") String roleCode);

	/**
	 * 
	 * <strong>Title : selectMenuByRole<br>
	 * </strong> <strong>Description : </strong>查询角色对应的权限菜单br> <strong>Create on
	 * : 2015-8-13 下午02:38:07<br>
	 * </strong>
	 * <p>
	 * 
	 * @param siteCode
	 * @param roleCode
	 * @return List<MenuInfo>
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public List<Menu> selectMenuByRole(@Param("siteCode") String siteCode, @Param("roleCode") String roleCode);

	/**
	 * 
	 * <strong>Title : selectUserByRole<br>
	 * </strong> <strong>Description : </strong>查询角色对应的用户<br>
	 * <strong>Create on : 2015-8-13 下午02:38:43<br>
	 * </strong>
	 * <p>
	 * 
	 * @param siteCode
	 * @param roleCode
	 * @return List<UserInfo>
	 * @throws
	 * @author dapeng.li<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public List<UserInfo> selectUserByRole(@Param("siteCode") String siteCode, @Param("roleCode") String roleCode);

	/**
	 * 
	 * <strong>Title : selectRoleBusinessType<br>
	 * </strong> <strong>Description : </strong>增加角色权限<br>
	 * <strong>Create on : 2016-11-9 上午10:25:50<br>
	 * </strong>
	 * <p>
	 * 
	 * @param siteCode
	 * @param roleCode
	 * @param businessType
	 * @return RoleBusinessType
	 * @throws
	 * @author ZhiPeng.Tong<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public void insertRoleBusinessType(RoleBusinessType roleBusinessType);

	/**
	 * 
	 * <strong>Title : updateRoleBusinessType<br>
	 * </strong> <strong>Description : </strong>修改角色权限<br>
	 * <strong>Create on : 2016-11-17 上午9:01:38<br>
	 * </strong>
	 * <p>
	 * 
	 * @param roleBusinessType
	 *            void
	 * @throws
	 * @author ZhiPeng.Tong<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public void updateRoleBusinessType(RoleBusinessType roleBusinessType);

	/**
	 * 
	 * <strong>Title : selectRoleBusinessTypeByRole<br>
	 * </strong> <strong>Description : </strong>通过Role查询角色权限<br>
	 * <strong>Create on : 2016-11-17 上午9:02:18<br>
	 * </strong>
	 * <p>
	 * 
	 * @param siteCode
	 * @param roleCode
	 * @return List<RoleBusinessType>
	 * @throws
	 * @author ZhiPeng.Tong<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public List<RoleBusinessType> selectRoleBusinessTypeByRole(@Param("siteCode") String siteCode, @Param("roleCode") String roleCode);

	/**
	 * 
	 * <strong>Title : selectRoleBusinessTypeByPk<br>
	 * </strong> <strong>Description : </strong>通过主键查询角色权限<br>
	 * <strong>Create on : 2016-11-17 上午9:03:09<br>
	 * </strong>
	 * <p>
	 * 
	 * @param siteCode
	 * @param roleCode
	 * @param businessType
	 * @return RoleBusinessType
	 * @throws
	 * @author ZhiPeng.Tong<br>
	 * @version <strong>v1.0.0</strong><br>
	 * <br>
	 *          <strong>修改历史:</strong><br>
	 *          修改人 | 修改日期 | 修改描述<br>
	 *          -------------------------------------------<br>
	 * <br>
	 * <br>
	 */
	public RoleBusinessType selectRoleBusinessTypeByPk(@Param(value = "siteCode") String siteCode, @Param(value = "roleCode") String roleCode, @Param(value = "businessType") String businessType);
}
